
package TablaSimbolos;

/**
 *
 * @author Diego
 */
/*el ofset de los parametro es cuando mas alejados estan mas chico es el offset*/

public class entradaParametro extends entradaTS
{   
    String nombreEnQueClaseEsta;//indica en que clase se esta usando este parametro
    String nombreDelMetodo; //indica en que metodo de esta usando este parametro.
    int offsetParametro; //da el offset del parametro. Es el orden del mismo.
    entradaClase tipoDeParametro; //Indica de que tipo es el parametro.
    
    public entradaClase getTipoDeParametro() {
        return tipoDeParametro;
    }
    
    /**************************************************************************/
    /* Metodos de la clase entradaParametro
    /**************************************************************************/ 
    
    /**
     * Setea el nombre de la clase en que se esta usando ese parametro.
     * @param ncmp es el nombre de la clase donde se esta haciendo referencia a
     * dicho parametro.
     */
    
    public void setearNombreClaseP(String ncmp)
    {
        nombreEnQueClaseEsta=ncmp;
    }
    
    /**
     * Setea el nombre del metodo en que se esta usando ese parametro.
     * @param nmp es el nombre del metodo donde se esta haciendo referencia a
     * dicho parametro.
     */
    
    public void setearNombreMetodoP(String nmp)
    {
        nombreDelMetodo=nmp;
    }
    
    /**
     * Devuleve el nombre donde se esta usando ese parametro.
     * @return Devuelve el nombre de la clase donde esta el parametro.
     */
    public String darNombreClaseP()
    {
        return nombreEnQueClaseEsta;
    }
    
    /**
     * Devuleve el nombre donde se esta usando ese parametro.
     * @return Devuelve el nombre del metodo donde esta el parametro.
     */
    
    public String darNombreMetodoP()
    {
        return nombreDelMetodo;
    }
    
    /**
     * Retorna el tipo del parametro en formato String.
     * @return Retorna en formato String el tipo del parametro.
     */
    
    public String toStringTipoP()
    {
        return this.tipoDeParametro.darNombre();
    }
    
    /**
     * Setea el offset del parametro, es decir su ubicacion en la lista 
     * de los parametros del metodo
     */
    public void setearOffsetParametro(int offsp)
    {
        offsetParametro = offsp;
    }
    
    /**
     * Retorna el offset del parametro.
     */
    
    public int darOffsetParametro()
    {
        return offsetParametro;
    }
    
    /**
     * Setea de que tipo es el parametro
     */
    public void setearTipoParametro(entradaClase ec)
    {
        tipoDeParametro=ec;
    }
    
    /**
     * Este metodo permite imprimir por pantalla el valor de los atributos del
     * parametro.
     */
    public void mostrarAtributosParametro()
    {   
        System.out.println("\n");
        System.out.println("**********************************");
        System.out.println("Nombre de parametro: "+this.darNombre());
        System.out.println("Esta usado en clase: "+nombreEnQueClaseEsta);
        System.out.println("Esta usado en el metodo: "+nombreDelMetodo);
        System.out.println("El parametro es de tipo: "+tipoDeParametro.darNombre());
        System.out.println("Su offset es: "+offsetParametro);
        System.out.println("**********************************");
    
    }
    /**************************************************************************/
    /* Constructor de la clase entradaParametro
    /**************************************************************************/ 
        
    public entradaParametro(String nameparametro)
    {        
        super(nameparametro);
        
    }
}
